using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Reflection;
using System.CodeDom.Compiler;

namespace NBusiness.CodeDom.Compiler
{
    [Serializable]
	public abstract class EntityProvider : CodeDomProvider
	{
        [NonSerialized]
        private List<string> _references = new List<string>();
        public List<string> References
        {
            get { return _references; }
        }

		public abstract CompilerResults CompileAssemblyFromFiles(EntityCompilerParameters options, params EntityResourceFile[] files);

		public abstract CompilerResults CompileAssemblyFromFamilies(EntityCompilerParameters options, EntityRoot root);

		public abstract EntityResourceFile[] GenerateFilesFromFamily(EntityCompilerParameters parameters, EntityRoot root);

		public abstract EntityRoot ParseCode(params string[] code);

		public abstract EntityRoot ParseFiles(params string[] files);
    }
}
